<?php

$ListTableP = '<?php

class Zend_View_Helper_ListTableP
{
    /**
     * Właściwość przechowuje przygotowaną tablicę do renderowania
     * przy pomocy partialLoop.
     * @var array()
     */
    private $_preparedRows;

    /**
     * Metoda listuje tabele na podstawie zadanego mapera i paginatora. Ponadto zwraca do każdego
     * rekordu wartoci rekodrów z kluczy obcych
     * @param $tableMapper
     * @param $paginator | Zend_Paginator
     * @return array() | Zwraca tablicę dla partialLoop
     */

    public function ListTableP( $p_tableMapper, 
    							Zend_Paginator $p_paginator, 
    							$p_kolumn_wyswietl_lista = array() )
    {
        $table = new $p_tableMapper;

        $this->prepareRows( $table->fields_list, $p_paginator, $p_tableMapper, $table->const_list, $table->fk_list, $p_kolumn_wyswietl_lista );

        return $this->_preparedRows;
    }

    private function prepareRows( 	$p_fields_list, 
    								$p_paginator,
    								$p_maper, 
    								$p_const_list = array(),
    								$p_fk_list = array(), 
    								$p_kolumn_wyswietl_lista = array())
    {  
    	// format danych do partialLoop
        /*$model = array(
          array(\'key\' => \'Mammal\', \'value\' => \'Camel\'),
          array(\'key\' => \'Bird\', \'value\' => \'Penguin\'),
          array(\'key\' => \'Reptile\', \'value\' => \'Asp\'),
          array(\'key\' => \'Fish\', \'value\' => \'Flounder\'));
          */

        $model = array();
        $row = array();
		
        
        
        foreach ( $p_paginator as $element )
        {           
        	
        	foreach( $p_fields_list as $field )
            {
                if( !empty($p_kolumn_wyswietl_lista) )
                {
                	foreach ($p_kolumn_wyswietl_lista as $v)
                	{
                		if ($field==$v)               			
                			$row[$field] = $element[$field];		
                	}
                }
                else
                {	
                	$row[$field] = $element[$field];
                }
            }
			
            //--------------------Na podstawie contstraintów-----------//
            $licznik = 0;
            //--------------------Pobieranie kolejnych kluczy obcych---//
            if ($p_fk_list!= NULL)
            {
	            foreach ($p_fk_list as $fk)
	        	{
	        		$table = $p_const_list[$licznik];
	        		//----------------Przetwarzanie na potrzeby znalezienia nazwy mapera---------------//
	        		$pos1 = stripos($table, \'_\');
	        		
			    	if ($pos1!==false)
					{
						do 
						{			
							$przed = substr($table,0,$pos1);
							$duza = substr($table,$pos1+1,1);
							$po = substr($table,$pos1+2);					
							
							$duza = strtoupper($duza);
							$table = $przed.$duza.$po;
							
							$field2 = $table;
	
							$pos1 = stripos($table, \'_\');
						}
						while ($pos1!==false);
					}
					//---------------------------------------------------------------------------------//
					//--------------Wykonywanie dodatkowego zapytania i wstawianie do wyniku-----------//
					$maper_obcy = new $field2;
					
					//--------------Aby odróżnić odwolanie do tej samej tabeli-------------------------//
					$odrozniacz = \'\';
					if ($p_maper==$field2)
						$odrozniacz = \'2\';
									
					if ($element[$fk]!=NULL)
					{					
						$result = $maper_obcy->selectOne($element[$fk]);					
						foreach ($result as $v => $f)
						{
							if( !empty($p_kolumn_wyswietl_lista) )
		                	{
		                		foreach ($p_kolumn_wyswietl_lista as $s)
		                		{
		                			if ($v.$odrozniacz==$s.$odrozniacz)
		                				$row[$v.$odrozniacz] = $f;		
		                		}
		                	}
		                	else
		                	{	
								$row[$v.$odrozniacz] = $f;
		                	}
						}
					}
					//---------------------------------------------------------------------------------//
	        		$licznik += 2;
	        	}
        	}
            //----------------------------------------------------------//
            array_push($model, $row );
            $row = array();           
        }

        $this->_preparedRows = $model;
    }

    public function friendlyUrl( $name )
    { 	
		return str_replace(
							array(" - "," ","-",".",",",";","ą", "ć", "ę", "ł", "ń", "ó", "ś", "ź", "ż", "Ą", "Ć", "Ę", "Ł", "Ń", "Ó", "Ś", "Ź", "Ż"),
							array("_","_","_","","","","a", "c", "e", "l", "n", "o", "s", "z", "z", "A", "C", "E", "L", "N", "O", "S", "Z", "Z"),
		 					$name
		 				  );
    }    
    
}';

$ListTable = '<?php

class Zend_View_Helper_ListTable
{
    /**
     * Właściwość przechowuje przygotowaną tablicę do renderowania
     * przy pomocy partialLoop.
     * @var array()
     */
    private $_preparedRows;

    /**
     * Metoda listuje tabele na podstawie zadanego mapera. Ponadto zwraca do każdego
     * rekordu wartoci rekodrów z kluczy obcych
     * @param $tableMapper
     * @param $paginator | Zend_Paginator
     * @return array() | Zwraca tablicę dla partialLoop
     */

    public function ListTable( $p_tableMapper,
    							$p_where = array(),
    							$p_order = array(),
    							$p_from = array(),
    							$p_group = array(),
    							$p_kolumn_wyswietl_lista = array() )
    {
        $table = new $p_tableMapper;
		$result = $table->selectAll(NULL,NULL,$p_where,$p_from,$p_order,$p_group);
        
        $this->prepareRows( $result, $table->fields_list, $table->const_list, $table->fk_list, $p_kolumn_wyswietl_lista );

        return $this->_preparedRows;
    }

    private function prepareRows( 	$p_result,
    								$p_fields_list, 
    								$p_const_list = array(),
    								$p_fk_list = array(), 
    								$p_kolumn_wyswietl_lista = array())
    {  
    	// format danych do partialLoop
        /*$model = array(
          array(\'key\' => \'Mammal\', \'value\' => \'Camel\'),
          array(\'key\' => \'Bird\', \'value\' => \'Penguin\'),
          array(\'key\' => \'Reptile\', \'value\' => \'Asp\'),
          array(\'key\' => \'Fish\', \'value\' => \'Flounder\'));
          */

        $model = array();
        $row = array();

        foreach ( $p_result as $element )
        {           
        	
        	foreach( $p_fields_list as $field )
            {
                if( !empty($p_kolumn_wyswietl_lista) )
                {
                	foreach ($p_kolumn_wyswietl_lista as $v)
                	{
                		if ($field==$v)
                			$row[$field] = $element[$field];		
                	}
                }
                else
            		$row[$field] = $element[$field];
            }

            //--------------------Na podstawie contstraintów-----------//
            $licznik = 0;
            //--------------------Pobieranie kolejnych kluczy obcych---//
            if ($p_fk_list!= NULL)
            {
	            foreach ($p_fk_list as $fk)
	        	{
	        		$table = $p_const_list[$licznik];
	        		//----------------Przetwarzanie na potrzeby znalezienia nazwy mapera---------------//
	        		$pos1 = stripos($table, \'_\');
			    	if ($pos1!==false)
					{
						do 
						{			
							$przed = substr($table,0,$pos1);
							$duza = substr($table,$pos1+1,1);
							$po = substr($table,$pos1+2);					
							
							$duza = strtoupper($duza);
							$table = $przed.$duza.$po;
							
							$field2 = $table;
	
							$pos1 = stripos($table, \'_\');
						}
						while ($pos1!==false);
					}
					//---------------------------------------------------------------------------------//
					//--------------Wykonywanie dodatkowego zapytania i wstawianie do wyniku-----------//
					$maper_obcy = new $field2;
					//--------------Aby odróżnić odwolanie do tej samej tabeli-------------------------//
					$odrozniacz = \'\';
					if ($p_maper==$field2)
						$odrozniacz = \'2\';
					
					if ($element[$fk]!=NULL)
					{	
						$result = $maper_obcy->selectOne($element[$fk]);					
						foreach ($result as $v => $f)
						{
							if( !empty($p_kolumn_wyswietl_lista) )
		                	{
		                		foreach ($p_kolumn_wyswietl_lista as $s )
		                		{
		                			if ($v.$odrozniacz==$s.$odrozniacz)
		                				$row[$v.$odrozniacz] = $f;		
		                		}
		                	}
		                	else
		                	{	
								$row[$v.$odrozniacz] = $f;
		                	}
						}
					}
					//---------------------------------------------------------------------------------//
	        		$licznik += 2;
	        	}
        	}
            //----------------------------------------------------------//
            array_push($model, $row );
            $row = array();
        }

        $this->_preparedRows = $model;
    }

    public function friendlyUrl( $name )
    { 	
		return str_replace(
							array(" - "," ","-",".",",",";","ą", "ć", "ę", "ł", "ń", "ó", "ś", "ź", "ż", "Ą", "Ć", "Ę", "Ł", "Ń", "Ó", "Ś", "Ź", "Ż"),
							array("_","_","_","","","","a", "c", "e", "l", "n", "o", "s", "z", "z", "A", "C", "E", "L", "N", "O", "S", "Z", "Z"),
		 					$name
		 				  );
    }    
    
}';

$files = $files+array('/application/modules/default/views/helpers/ListTableP.php' => $ListTableP,
			   	  	  '/application/modules/default/views/helpers/ListTable.php' => $ListTable,);

$f_kopiuj = $f_kopiuj+array('/application/modules/default/views/helpers/ListTableP.php'.'(*)'.'application/modules/cms/views/helpers/ListTableP.php',
							'/application/modules/default/views/helpers/ListTable.php'.'(*)'.'application/modules/cms/views/helpers/ListTable.php');

